package ar.com.profertil.galicia.service;

import com.sap.security.core.util.Base64;

import ar.com.profertil.galicia.parser.ParserEnvioDeuda;
import ar.com.profertil.utils.service.EnviarArchivoBancoService;
import ar.com.profertil.utils.service.RSABCAux;

/**
 * The Class EnviarArchivoDeudaGaliciaService.
 */
public class EnviarArchivoDeudaGaliciaService {

	/** The Constant WORKING_PATH. */
	private static final String WORKING_PATH = "/interface/tempws/";

	/** The Constant ORIGIN_NAME. */
	private static final String ORIGIN_NAME = "deudaGalicia.txt";

	/** The Constant ZIP_FILE_NAME. */
	private static final String ZIP_FILE_NAME = "deudaGalicia.zip";

	/** The Constant ENCRIPTED_ZIP_FILE_NAME. */
	private static final String ENCRIPTED_ZIP_FILE_NAME = "deudaGaliciaEnc.3des";

	/** The Constant CERTIFICADO_FILE_NAME. */
	private static final String CERTIFICADO_FILE_NAME = "BGBA WS-Testing.pfx";

	/** The Constant CERTIFICADO_PASSWORD. */
	private static final String CERTIFICADO_PASSWORD = "YtReW45";

	/** The eabs. */
	private EnviarArchivoBancoService eabs;

	/**
	 * Instantiates a new enviar archivo deuda galicia service.
	 */
	public EnviarArchivoDeudaGaliciaService() {
		eabs = new EnviarArchivoBancoService();
	}

	/**
	 * Enviar archivo.
	 * 
	 * @param workingPath
	 *            the working path
	 * @param originFileName
	 *            the origin file name
	 * @param destFileName
	 *            the dest file name
	 * @param encriptedFileName
	 *            the encripted file name
	 * @param nombreCertificado
	 *            the nombre certificado
	 * @param keyStorageView
	 *            the key storage view
	 * @param sAlias
	 *            the alias of a key in the key storage view
	 * @param password
	 *            the password
	 * @param head
	 *            the head
	 * @param detalleD
	 *            the detalle d
	 * @param detalleE
	 *            the detalle e
	 * @param trail
	 *            the trail
	 * @param firmantes
	 *            the firmantes
	 * @param firmaArchivo
	 *            the firma archivo
	 * @return the string
	 * @throws Exception
	 */
	public String enviarArchivo(
			String keyStorageView, 
			String sAlias,
			String password, 
			String head, 
			String[] detalleD, 
			String[] detalleE,
			String trail) throws Exception {

		return enviar(keyStorageView, sAlias, password, head, detalleD, detalleE, trail);

	}

	/**
	 * Enviar archivo.
	 * 
	 * @param head
	 *            the head
	 * @param detalleD
	 *            the detalle d
	 * @param detalleE
	 *            the detalle e
	 * @param trail
	 *            the trail
	 * @param firmantes
	 *            the firmantes
	 * @param firmaArchivo
	 *            the firma archivo
	 * @return the string
	 * @throws Exception 
	 */
	public String enviarArchivo(String head, 
				String[] detalleD,
				String[] detalleE, 
				String trail, 
				String[] firmantes) throws Exception {
//			return enviar(WORKING_PATH, ORIGIN_NAME, ZIP_FILE_NAME,
//					ENCRIPTED_ZIP_FILE_NAME, CERTIFICADO_FILE_NAME,
//					CERTIFICADO_PASSWORD, null, null, head, detalleD, detalleE,
//					trail, firmantes);
		return enviar(null, null, CERTIFICADO_PASSWORD, head, detalleD, detalleE,	trail);
	}

	/**
	 * Enviar.
	 * 
	 * @param workingPath
	 *            the working path
	 * @param originFileName
	 *            the origin file name
	 * @param destFileName
	 *            the dest file name
	 * @param encriptedFileName
	 *            the encripted file name
	 * @param nombreCertificado
	 *            the nombre certificado
	 * @param password
	 *            the password
	 * @param keyStorageView
	 *            the key storage view
	 * @param sAlias
	 *            the alias of a key in the key storage view
	 * @param head
	 *            the head
	 * @param detalleD
	 *            the detalle d
	 * @param detalleE
	 *            the detalle e
	 * @param trail
	 *            the trail
	 * @param firmantes
	 *            the firmantes
	 * @param firmaArchivo
	 *            the firma archivo
	 * @return the string
	 * @throws Exception
	 *             the exception
	 */
	private String enviar(
			String keyStorageView,
			String sAlias, 
			String password, 
			String head, 
			String[] detalleD, 
			String[] detalleE,
			String trail) throws Exception {
		ParserEnvioDeuda parser = new ParserEnvioDeuda();
//		return eabs.enviarArchivo(workingPath, originFileName, destFileName,
//				encriptedFileName, nombreCertificado, keyStorageView, sAlias,
//				password, firmantes, parser.armarInformacionEnviarArchivo(head,
//						detalleD, detalleE, trail));
		String encriptado=eabs.enviarArchivo(
				parser.armarInformacionEnviarArchivo(head,detalleD, detalleE, trail), 
				keyStorageView, 
				sAlias, 
				password );

		// String firma = RSABCAux.firmar(certificado, keyStorageView, sAlias, password, cadena);
		Base64 encriptadorTxt=new Base64();
		String encriptadoBase64=encriptadorTxt.encode(encriptado.getBytes());
		
		return encriptadoBase64;
	}
}
